"""
给定一个长度为 n 的整数数组 height 。有 n 条垂线，第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。
"""

"""
超时，时间复杂度太高
"""
# 返回容器可以储存的最大水量from typing import List
# from typing import List
# class Solution:
#     def maxArea(self, height:List[int]) -> int:
#         volum = []
#         for i in range(0,len(height)):
#             for j in range(i,len(height)):
#                 min_num = min(height[i],height[j])
#                 volum.append((j-i)*min_num)
#         return max(volum)
# print(Solution().maxArea([1,8,6,2,5,4,8,3,7]))

from typing import List
class Solution:
    def maxArea(self, height:List[int]) -> int:
        left = 0
        right = len(height)-1
        volum = 0
        max_vo = 0
        while left < right:
            h = min(height[left],height[right])
            w = right-left
            volum = h * w
            max_vo = max(volum,max_vo)
            if height[left] < height[right]:
                left+=1
            else:
                right-=1
        return max_vo

print(Solution().maxArea([1,8,6,2,5,4,8,3,7]))